Python之路 - 文件操作
介绍 🍀
在磁盘上读写文件的功能都是由操作系统提供的 , 现代操作系统不允许普通的程序直接操作磁盘 , 所以 , 读写文件就是请求操作系统打开一个文件对象 (通常称为文件描述符) ; 然后 , 通过操作系统提供的接口从这个文件对象中读取数据 (读文件) , 或者把数据写入这个文件对象 (写文件)
在Python中我们进行文件操作需要首先利用open()
函数获取一个文件流来操作文件
这个流就是我们所使用的文件描述符 , 是一个I/O通道
open() 🍀
1 | open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None): |
对于上述参数中 , 我们主要需要了解的就是file
, mode
, encoding
这三个
对于mode , 有以下模式 :
Character | Meaning |
---|---|
'r' |
open for reading (default) |
'w' |
open for writing, truncating the file first |
'x' |
open for exclusive creation, failing if the file already exists |
'a' |
open for writing, appending to the end of the file if it exists |
'b' |
binary mode |
't' |
text mode (default) |
'+' |
open a disk file for updating (reading and writing) |
'U' |
universal newlines mode (deprecated) |
常使用的就是'r'
, 'w'
, 'a'
, '+'
, 'b'
, 当然还可以组合使用 , 下面进行详细介绍 :
- r , 只读模式 , 文件必须已经存在
- r+ , 可读可写模式 , 文件必须已经存在
- w , 只写模式 , 会重新创建 , 意味着文件如果已存在会被空文件覆盖
- w+ , 可写可读模式 , 同样会创建文件
- a , 追写模式 , 文件不存在参考’w’
- a+ , 追写并可读模式 , 文件不存在参考’w’
- b , 以二进制的模式进行处理 (Linux可忽略 , Windows处理二进制文件时需标注) , 可以用该模式来读取图片 , 视频等等
- rb , 同r
- wb , 同w
- ab , 同a
简单实例
file.txt
1 | A man is not old until his regrets take place of his dreams. |
实例
1 | f = open('file.txt','r') |
file-like object 🍀
io模块提供了Python处理各种类型I/O的主要工具 , 有三种主要类型 , 即文本I/O
, 二进 制I/O
和原始I/O
, 这些是通用类别 , 并且可以为它们中的每一个使用各种后备存储
三种主要类型详细见 : TextIOBase
, BufferedIOBase
, RawIOBase
属于这些类别中的任何一个的具体对象称为file-like object
创建这些类别的具体对象最简单的方法就是使用内置的open()
函数 , 其也被定义在io模块中 , 下面仅介绍一些这些类别对象常用的方法 :
1 | detach() |
注意 : 当使用完文件后一定要记得使用close()
方法将其关闭 ; 其次在进行文件操作时要注意文件描述符所在的位置
with 🍀
为了避免打开文件后忘记手动关闭 , 可以通过管理上下文 , 即使用with
语句 , 如下 :
1 | with open('filepath','mode') as f: |
在Python 2.7以上的版本 , 支持同时对多个文件同时进行上下文管理 , 如下 :
1 | with open('filepath1','mode') as f1,open('filepath2','mode') as f2: |
更多文档资料 : https://docs.python.org/3.5/library/io.html?highlight=io#module-io